Multimedia content is a type of time based material and consists of multiple content elements that may be continuous content (e.g., video, audio) or non-continuous content (e.g. text, html for web pages) which must be presented at specified times with respect (or referenced) to a common system clock. This time reference is generally associated with one of the elements and is used to ensure that the presentation of the content elements, or single components of content, are synchronized at playback. For example, time stamps ensure that audio and subtitle elements are synchronized with the video element of a movie.
In order for a content source or other device to stream multimedia content over a communication path, such as a network or a satellite link, the elements are broken into presentation units, each with associated time stamps. The resulting presentation units are encapsulated in one or more packets for transmission. Typically, these packets are interleaved into a continuous packetized stream such that synchronized content elements are delivered to the proper receiving device in a timely fashion.
Data packets differ depending on the communication medium over which data content is transmitted. For example, multimedia data content may include massive amounts of data. Streaming systems cannot always rely on buffering data in the receiving device, or on the communication media carrying the data to maintain synchronization. In general, content must not be delivered too early or too late.
When streaming from a content server, such as equipment that delivers time based content to a receiving device, it is often necessary to update or regenerate the time stamps associated with the content in order to maintain valid streams. Existing content servers, implement time stamp updates by searching the component streams for the relevant time stamp as the content is streamed out. In many instances, the individual content elements are separated, updated with new time stamps and recombined to form a new packetized stream with the correct timing. This process must be performed in real-time for each active stream in the system and reoccurs for each request for the stream. As the active stream count from a server increases, the amount of work required also increases. A conventional approach can not support this level of processing and fails to maintain valid streams and results in poor presentation quality.
If navigation is supported, the content server will typically build or obtain an index or table of access points prior to content becoming available for streaming. Again, this process must be performed in real-time for each active stream. This is normally performed by a software manager or hardware manager of the time based material stream, which may be referred to as a stream processor. The processing and memory demands associated with conventional stream processing techniques limits the number of streams and stream throughput that can be supported by a given content server. In some cases, specialized stream processors may be used to assist with stream processing.